#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,ans=1e16;
struct ok{
	int x,y;
}a[100005];
struct node{
	int mx,mx2;
}T[2][400005];
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
void build(int k,int l,int r){
	if(l==r){
		T[0][k].mx=a[l].x;
		T[0][k].mx2=1e18;
		T[1][k].mx=a[l].x+a[l].y;
		T[1][k].mx2=1e18;
		return;
	}
	int mid=(l+r)>>1;
	build(k<<1,l,mid);build((k<<1)^1,mid+1,r);
	if(T[0][k<<1].mx<=T[0][(k<<1)^1].mx){
		T[0][k].mx=T[0][k<<1].mx;
		T[0][k].mx2=min(T[0][k<<1].mx2,T[0][(k<<1)^1].mx);
	}
	else{
		T[0][k].mx=T[0][(k<<1)^1].mx;
		T[0][k].mx2=min(T[0][k<<1].mx,T[0][(k<<1)^1].mx2);
	}
	if(T[1][k<<1].mx<=T[1][(k<<1)^1].mx){
		T[1][k].mx=T[1][k<<1].mx;
		T[1][k].mx2=min(T[1][k<<1].mx2,T[1][(k<<1)^1].mx);
	}
	else{
		T[1][k].mx=T[1][(k<<1)^1].mx;
		T[1][k].mx2=min(T[1][k<<1].mx,T[1][(k<<1)^1].mx2);
	}
//	cerr<<k<<" "<<l<<" "<<r<<" "<<T[1][k].mx<<" "<<T[1][k].mx2<<"\n";
}
inline node query(int k,int l,int r,int ll,int rr,int p){
	if(ll<=l&&rr>=r) return T[p][k];
	int mid=(l+r)>>1;node w;w.mx=w.mx2=1e18;
	bool F=0;
	if(ll<=mid) w=query(k<<1,l,mid,ll,rr,p),F=1;
	if(rr>mid){
		if(!F) w=query((k<<1)^1,mid+1,r,ll,rr,p);
		else{
			node t=query((k<<1)^1,mid+1,r,ll,rr,p);
			int s=w.mx;
			if(t.mx<w.mx){
				w.mx=t.mx;
				w.mx2=min(s,t.mx2);
			}
			else w.mx2=min(w.mx2,t.mx);
		}
	}
	return w;
}
inline bool cmp(ok x,ok y){
	return x.y<y.y;
}
signed main(){
	freopen("boast.in","r",stdin);
	freopen("boast.out","w",stdout);
	n=read();
	for(int i=1;i<=n;i++) a[i].x=read(),a[i].y=read();
	sort(a+1,a+1+n,cmp);
	build(1,1,n);
	for(int i=1;i<=n;i++){
		int t1=i-1,t2=n-i;
		if(t1>=2){
			node d=query(1,1,n,1,i-1,0);
			ans=min(ans,d.mx+d.mx2+a[i].x+a[i].y+a[i].y);
		}
		if(t2>=2){
			node d=query(1,1,n,i+1,n,1);
//			cerr<<i<<" "<<d.mx<<" "<<d.mx2<<"\n";
			ans=min(ans,a[i].x+d.mx+d.mx2);
		}
		if(t1>=1&&t2>=1){
			node d1=query(1,1,n,1,i-1,0);
			node d2=query(1,1,n,i+1,n,1);
			ans=min(ans,a[i].x+d2.mx+d1.mx+a[i].y);
		}
	}
	cout<<ans;
	return 0;
}

